#include<bits/stdc++.h>
using namespace std;
struct cars{
    int d,v,a;
}arr[100010];
struct csy{
    int wz;
    vector<int> v;
}arr_c[100010];
bool cmp(csy a,csy b){
    return a.wz>b.wz;
}
bool cmp1(csy a,csy b){
    return a.v.size()>b.v.size();
}
vector<int> mb;
vector<int> yy;
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int t;
    cin>>t;
    while(t--){
        int n,m,l,v;
        cin>>n>>m>>l>>v;
        for(int i = 0;i<n;i++){
            cin>>arr[i].d>>arr[i].v>>arr[i].a;
        }
        sort(arr_c,arr_c+m,cmp);
        for(int i = 0;i<n;i++){
            int flag=0;
            double t=1.0*(v-arr[0].v)/arr[i].a;
            double s=arr[0].v*t+0.5 * arr[i].a*pow(t,2);
            if(s>v||s<0)continue;
            else{
                if(arr[i].a>=0){
                    for(int j = 0;j<m&&arr_c[j].wz>s+arr[i].d;j++){
                            arr_c[j].v.push_back(i);
                            flag=1;
                    }
                }else{
                    for(int j = m-1;j>=0;j--){
                            if(arr[i].a*(arr_c[j].wz-arr[i].d)+arr[i].v>v){
                                arr_c[j].v.push_back(i);
                        flag=1;
                            }

                    }
                }
                if(flag){
                    mb.push_back(i);
                }
            }
        }
        sort(arr_c,arr_c+m,cmp1);
        for(int i = 0;i<mb.size();i++){
            if(yy.empty())yy.push_back(0);
            else{
                int flag=1;
                for(int j = 0;j<yy.size()&&flag;j++){
                    for(int k = 0;k<arr_c[yy[j]].v.size();k++){
                        if(arr_c[yy[j]].v[k]==mb[i]){
                            flag=0;
                            break;
                        }
                    }
                }
                for(int j = 0;j<m&&flag;j++){
                    for(int k = 0;k<arr_c[j].v.size();k++){
                        if(arr_c[j].v[k]==mb[i])yy.push_back(j);
                    }
                }
            }
        }
        cout<<mb.size()<<" "<<m-yy.size()<<endl;
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}
